package com.pro.common.api.cursor.sync.service;

import com.pro.framework.api.enums.ITaskCursorKey;

import java.time.LocalDateTime;
import java.util.Comparator;
import java.util.List;

/**
 * 支持多类型游标的同步任务接口
 */
public interface ICursorSyncHandler<T, C extends Comparable<? super C>> {

    ITaskCursorKey getCursorKey();

    /**
     * 游标类型
     */
    Class<C> getCursorClass();

    C getDefaultCursor();

    Integer getBatchSize();

    List<T> fetchData(C cursor, int limit, C endIfNeed);

    void process(List<T> dataList);

    default Boolean getCursorAscending() {
        return true; // 默认正序
    }

    C extractCursorValue(T item);

}
